﻿/*----------------------------------------------------------------------------------------
*
*  Copyright 2019, Gao Hai Hui, <fromzeropoint@126.com>.  All rights reserved.
*  https://gitee.com/helloworldghh/xoskit.git
*  Use of this source code is governed by a MIT license
*  that can be found in the License file.
*
----------------------------------------------------------------------------------------*/
#ifndef __35690CAA_63CD_4a8a_8C4C_DCC696CC57B4__
#define __35690CAA_63CD_4a8a_8C4C_DCC696CC57B4__

#include "../tools/head.h"

/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

namespace xos_curl
{

    class curl_impl : public xos_stl::mem_item< xos::release_impl< curl_impl >, thread_lock >,
		public i_curl
    {
    public:
        typedef xos::release_impl< curl_impl > T;

    public:
        /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        //

        static int get_addr( POOL *** pppPool, LIST *** pppList );

    public:
        curl_impl();
        ~curl_impl();

    public:
        int init();
        int term();

    public:
        // 
        // curl方法
        // 
        int set_opt( int enumOpt, ... );
        int perform();

        // 
        // 退出curl的读取函数
        // 
        int get_quit_read_code();

        // 
        // 退出http(或其它协议)返回码
        // 
        int get_ret_code();

        // 
        // reset
        // 
        int reset();

    protected:
        struct curl_slist * m_pSlist;
        CURL * m_pCurl;

    };

} // xos_curl

#endif // __35690CAA_63CD_4a8a_8C4C_DCC696CC57B4__
